<template>
  <div>
    <!-- 头部 -->
    <div class="header">
      <div class="front-header">
        <a href="/front/home">
          <div class="front-header-left">
            <img src="@/assets/logo.svg" alt="">
            <div class="title">图书管理系统</div>
          </div>
        </a>

        <!-- 菜单 -->
        <div class="front-header-center">
<!--          <div @click="goPage(item.path)" class="menu-item" v-for="item in menuList" :key="item.text" :class="{'menu-item-active' : item.path === $route.path }">{{ item.text }}</div>-->
        </div>

        <!-- 未登录情况展示 -->
        <div class="front-header-right">
          <div v-if="!user.username" class="front-header-right-button">
            <el-button type="primary" plain @click="$router.push('/login')">登录</el-button>
            <el-button type="success" plain @click="$router.push('/register')">注册</el-button>
          </div>
          <!-- 登录展示 -->
          <div v-else>
            <el-dropdown>
              <div class="front-header-dropdown">
                <img :src="user.avatar" alt="">
              </div>
              <el-dropdown-menu slot="dropdown">
                <el-dropdown-item>
                  <div style="color: #333">{{user.name}}</div>
                </el-dropdown-item>
                <el-dropdown-item>
                  <a style="color: #333" href="/front/person"><div>个人信息</div></a>
                </el-dropdown-item>
                <el-dropdown-item>
                  <div @click="logout">退出</div>
                </el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </div>
        </div>
      </div>
    </div>

    <!-- 主体 -->
    <div class="main-body">
      <router-view ref="child" @update:user="updateUser" />
    </div>

    <div class="right-side-card">
      <div class="card-item" v-for="(item, index) in menuList" :key="index" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave(index)" @click="goPage(item.path)">
        <img :src="item.icon" alt="icon" class="item-icon" />
        <span class="item-text">{{ item.text }}</span>
      </div>
    </div>

    <!-- 底部 -->
    <Footer />
  </div>
</template>

<script>

import Footer from "@/conponents/Footer.vue";

export default {
  name: "FrontLayout",
  components: {Footer},
  data () {
    return {
      name: this.$route.query.name || '',
      top: '',
      notice: [],
      user: localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : {},
      menuList: [
        {icon: require('@/assets/首页.svg'), text: "首页", isHover: false, path: '/front/home'},
        {icon: require('@/assets/大厅.svg'), text: "图书大厅", isHover: false, path: '/front/category'},
        {icon: require('@/assets/我的借阅.svg'), text: "我的借阅", isHover: false, path: '/front/borrow'},
        {icon: require('@/assets/我的收藏.svg'), text: "我的收藏", isHover: false, path: '/front/collect'},
      ],
      messageCount: 0,
      advertisement: { content: '', cover: '' },
    }
  },
  created() {
    this.loadNotice()
  },
  methods: {
    goPage(path) {
      location.href = path;
    },
    handleMouseEnter(index) {
      this.menuList[index].isHover = true;
    },
    handleMouseLeave(index) {
      this.menuList[index].isHover = false;
    },
    search() {
      location.href = '/front/search?name=' + this.name
    },
    loadNotice() {
      this.$request.get('/notice').then(res => {
        this.notice = res.data || []
        let i = 0
        if (this.notice && this.notice.length) {
          this.top = this.notice[0].name
          setInterval(() => {
            this.top = this.notice[i].name
            i++
            if (i === this.notice.length) {
              i = 0
            }
          }, 2500)
        }
      })
    },
    updateUser() {
      this.user = JSON.parse(localStorage.getItem('user') || '{}')   // 重新获取下用户的最新信息
    },
    // 退出登录
    logout() {
      localStorage.removeItem("user");
      location.href = '/front/home'
    }
  }
}
</script>

<style scoped>
/* 全局引入基础样式 */
@import "@/assets/css/front.css";

/* 顶部头部阴影 */
.header {
  box-shadow: 0 2px 4px rgba(0,0,0,.08); /* 添加轻微阴影，增强层次感 */
}

/* 搜索框容器（预留扩展） */
search-box {
  display: flex;                       /* 弹性布局 */
  margin-bottom: 20px;                 /* 底部外边距20px */
  max-width: 600px;                    /* 最大宽度限制为600px */
}

/* 右边按钮样式 */
.front-header-right-button{
  display: flex;                       /* 弹性布局 */
  margin-top: 15px;                    /* 距离上边距15px */
}

/* ==================== 右侧悬浮功能卡片 ==================== */
/* 固定在右侧中部的悬浮卡片容器 */
.right-side-card {
  position: fixed;                     /* 固定定位 */
  left: 30px;                         /* 距离右侧20px */
  top: 50%;                            /* 顶部50%，配合transform垂直居中 */
  transform: translateY(-50%);         /* 垂直居中修正 */
  display: flex;                       /* 弹性布局（竖向） */
  flex-direction: column;              /* 子项竖向排列 */
  align-items: center;                 /* 子项水平居中 */
  background-color: #fff;              /* 白色背景 */
  border: 1px solid #ebeef5;           /* 浅色边框 */
  border-radius: 12px;                 /* 大圆角，更柔和 */
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); /* 柔和阴影，提升立体感 */
  padding: 12px 8px;                   /* 内边距 */
}

/* 单个功能卡片项 */
.card-item {
  display: flex;                       /* 弹性布局（竖向） */
  flex-direction: column;              /* 图标+文字竖向排列 */
  align-items: center;                 /* 内容水平居中 */
  width: 48px;                         /* 固定宽度 */
  margin-bottom: 6px;                  /* 卡片间距 */
  cursor: pointer;                     /* 鼠标悬停手型 */
  transition: all 0.2s ease;           /* 平滑过渡动画 */
  border-radius: 8px;                  /* 内部圆角 */
  padding: 8px 0;                      /* 上下内边距 */
}

/* 最后一个卡片项，移除下边距 */
.card-item:last-child {
  margin-bottom: 0;
}

/* 功能卡片悬停或激活状态 */
.card-item:hover,
.card-item.is-hover {
  background-color: #f5f5f5;           /* 浅灰背景，表示可交互 */
}

/* 功能卡片图标样式 */
.item-icon {
  width: 24px;                         /* 图标宽度 */
  height: 24px;                        /* 图标高度 */
  margin-bottom: 4px;                  /* 与文字间距 */
}

/* 功能卡片文字样式 */
.item-text {
  font-size: 12px;                     /* 小字号 */
  color: #333;                         /* 深灰文字 */
  line-height: 1;                      /* 行高紧凑 */
}

</style>
